# -*- codeing = utf-8 -*-
# @Time : 2021/2/25 17:48
# @Atuthor: 朱朱
# @File: 103self语句的使用.py
# @Software: PyCharm
""
"""
__slots__ : 这个属性直接定义在类里,是一个元组,用来规定对象可以存在的属性
"""
class Student(object):
    __slots__ = ('name','age','city')

    def __init__(self,name,age):
        self.name = name
        self.age = age

    def say_hello(self):
        print('大家好,我是',self.name)


print(Student('张三', 18)) # <__main__.Student object at 0x00000132F4DD6BC8>
s = Student('张三',18)
print(s) # <__main__.Student object at 0x000002D566CF6C48>
# 以上代码的流程是什么呢?如下
# 1. 调用 __new__ 方法,用来申请内存空间
# 2. 调用 __init__ 方法传入参数，将 self 指向创建好的内存空间，填充数据
# 3. 变量 s1 也指向创建好的内存空间

print(s.name)
s.say_hello()

# print(s.height) # 没有属性,会报错 AttributeError: 'Student' object has no attribute 'height'

s.city = '上海'
print(s.city)
# 直接使用等号给一个属性赋值
# 如果这个属性以前不存在，会给对象添加一个新的属性
# 动态属性

s.name='jack'
print(s.name)
# 如果这个属性以前存在，会修改这个属性对应的值
